package gov.pr.celepar.sentinela.admin.action;

import java.util.Collection;

import javax.servlet.http.HttpServletRequest;

import gov.pr.celepar.framework.action.BaseDispatchAction;
import gov.pr.celepar.sentinela.admin.dao.SistemaDAO;
import gov.pr.celepar.sentinela.admin.dao.factory.DAOFactoryServer;
import gov.pr.celepar.sentinela.admin.excecao.SentinelaServerException;
import gov.pr.celepar.sentinela.admin.pojo.Sistema;
import gov.pr.celepar.sentinela.comunicacao.SentinelaComunicacao;

public class BaseSentinelaAction extends BaseDispatchAction {
	/**
	 * Método utilizado pelas demais subclasses quando necessário carregar as
	 * opções da combo de sistemas.
	 * 
	 * @param request
	 * @throws SentinelaServerException
	 * @throws Exception
	 */
	protected void consultarSistemas(HttpServletRequest request)
			throws SentinelaServerException, Exception {
		DAOFactoryServer daoFactory = DAOFactoryServer.getDAOFactory();
		SistemaDAO sistemaB = daoFactory.getSistemaDAO();

		try {
			Collection<Sistema> sistemas = null;
			if (SentinelaComunicacao.getInstance(request).isRoot()) {
				sistemas = sistemaB.listar();
			} else {
				long grupos[] = SentinelaComunicacao.getInstance(request)
						.getIdGrupos();
				Long codGrupos[] = null;
				if (grupos != null) {
					codGrupos = new Long[grupos.length];
					for (int i = 0; i < grupos.length; i++)
						codGrupos[i] = Long.valueOf(grupos[i]);
				}

				sistemas = sistemaB.listarByGrupos(codGrupos, false);
			}
			request.setAttribute("listaSistemas", sistemas);
		} catch (SentinelaServerException e) {
			throw e;
		} catch (Exception e) {
			throw e;
		}
	}
}
